package com.example.ad.sdk.domain.ad.repositories

import com.example.ad.sdk.domain.repositories.base.BaseRetrofitClient
import okhttp3.OkHttpClient


/**
 * AdRetrofitClient 是一个单例对象，继承自 BaseRetrofitClient，用于提供默认的 Retrofit 客户端配置。
 * 该对象包含一个懒加载的默认 API 服务实例，并允许动态设置基础主机地址。
 */
object AdRetrofitClient : BaseRetrofitClient() {

    /**
     * 懒加载的默认 API 服务实例。
     * 通过调用 getService 方法获取 DefaultApiService 的实例。
     */
    val defService by lazy { getService(AdApiService::class.java) }

    /**
     * 动态设置的基础主机地址。
     * 该属性用于在运行时动态更改 Retrofit 客户端的基础主机地址。
     */
    var dynamic: String = "https://ukamobi.com/cloud"

    /**
     * 获取当前设置的基础主机地址。
     *
     * @return 返回当前动态设置的基础主机地址。
     */
    override fun getBaseHost(): String {
        return if (dynamic.isNotEmpty()) dynamic else "https://ukamobi.com/cloud"
    }

    /**
     * 处理 OkHttpClient.Builder，用于自定义 OkHttpClient 的配置。
     * 该方法添加了一个默认的 HostUrl 拦截器，用于在请求时动态修改主机地址。
     *
     * @param builder OkHttpClient.Builder 实例，用于配置 OkHttpClient。
     */
    override fun handleBuilder(builder: OkHttpClient.Builder) {
        // 添加 HostUrl 拦截器
        builder.addInterceptor(AdHostUrlInterceptor())
    }

}